<?php
//Извлекает текст комментариев из pdf файла
function pdf2comment($filename) {
    echo 'FILENAME = '.$filename.'<br/>';
    $comments = NULL;

    // Читаем данные из pdf-файла в строку, учитываем, что файл может содержать
    // бинарные потоки.
    $infile = @file_get_contents($filename, FILE_BINARY);
    if (empty($infile))
        return NULL;

    // Проход первый. Нам требуется получить все текстовые данные из файла.
    // В 1ом проходе мы получаем лишь "грязные" данные, с позиционированием,
    // с вставками hex и так далее.

    // Для начала получим список всех объектов из pdf-файла.
    preg_match_all("#^3 0 obj(.*)endobj#ismU", $infile, $objects);
    $objects = @$objects[1];

    // Начнём обходить, то что нашли - помимо текста, нам может попасться
    // много всего интересного и не всегда "вкусного", например, те же шрифты.
    for ($i = 0; $i < count($objects); $i++) {
        $currentObject = $objects[$i];
        // Проверяем, есть ли в текущем объекте поток данных, почти всегда он
        // сжат с помощью gzip.
        if (preg_match("#stream(.*)endstream#ismU", $currentObject, $stream)) {
            $stream = ltrim($stream[1]);
//            echo gzuncompress($stream).'<br/>';
//            echo '<br/>';

            preg_match_all("#<span.*>(.*)</span>#ismU", gzuncompress($stream), $comments);
            $comments = @$comments[1];
        }
    }
    // Возвращаем комментарии
    return $comments;
}
?>
